//
//  WelcomeViewController.swift
//  SinaWeibo
//
//  Created by Tony-ztb on 15/12/17.
//  Copyright © 2015年 Tony-ztb. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage

class WelcomeViewController: UIViewController {

    override func loadView() {
        // 设置根视图
        view = backImageView
    }
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置子视图
        setupUI()
        
        /**
        在viewDidLoad中根视图是没有设置frame的 所以设置动画尽量不要在这里设置
        既要设置frame又要执行动画,会出现错误
        */
        
    }
    
    override func viewDidAppear(animated: Bool) {
        
        /**
        一般在viewDidAppear中执行动画
        */
        
        // 执行动画
        showAnimation()
    }
    
    // 设置子视图
    private func setupUI() {
        view.addSubview(iconView)
        view.addSubview(welcomeLabel)
        
        // 设置约束
        iconView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(view.snp_centerX)
            make.bottom.equalTo(view.snp_bottom).offset(-200)
            // 对size添加约束
            make.size.equalTo(CGSize(width: 80, height: 80))
        }
        welcomeLabel.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(iconView.snp_centerX)
            make.top.equalTo(iconView.snp_bottom).offset(15)
        }
        
        // 设置头像图片
        iconView.sd_setImageWithURL(UserAccountViewModel().userHeadURL, placeholderImage: UIImage(named: "avatar_default_big"))
        
        // 设置圆形头像
        iconView.layer.cornerRadius = 40
        iconView.layer.masksToBounds = true
        
    }
    
    // 执行动画: 修改iconView底部的约束
    private func showAnimation() {
        // 设置label透明图为零
        welcomeLabel.alpha = 0
        // 设置动画移动到的位置
        let offset = -UIScreen.mainScreen().bounds.height + 200
        
        // 对于已经存在的约束  如果需要进行修改可以使用update   如果不存在该约束,会自动创建约束
        iconView.snp_updateConstraints { (make) -> Void in
            // 修改约束,产生动画
            make.bottom.equalTo(view.snp_bottom).offset(offset)
        }
        UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.98, initialSpringVelocity: 9.8, options: [], animations: { () -> Void in
            // 自动布局,执行动画
            // 强制刷新页面, 将收集的所有的约束的更改 都进行页面刷新
            self.view.layoutIfNeeded()
            }) { (_) -> Void in
                // 动画执行完毕
                // 头像移动动画完成后,欢迎label在显示
                UIView.animateWithDuration(0.5, animations: { () -> Void in
                    // 让label显示
                    self.welcomeLabel.alpha = 1
                    }, completion: { (_) -> Void in
                        // 动画执行完毕
                        // 动画完毕后   发出 跳转到首页 的通知
                        NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootVCNotification, object: nil)
                        
                })
        }
    }
    
    
    
    // MARK: 懒加载所有的子视图
    private lazy var backImageView: UIImageView = UIImageView(image: UIImage(named: "ad_background"))
    private lazy var iconView: UIImageView = UIImageView()
    private lazy var welcomeLabel: UILabel = UILabel(title: (UserAccountViewModel().userName ?? "") + "\n欢迎回来", color: UIColor.lightGrayColor(), fontSize: 16)
    
}
